package vip.xiaonuo.hontu.issued.controller.vo;

import com.alibaba.fastjson.annotation.JSONField;
import lombok.Data;
import lombok.NoArgsConstructor;

@NoArgsConstructor
@Data
public class VerifyWithSnapVo {
    /**
     * 认证结果推送
     */
    @JSONField(name = "operator")
    private String operator;
    /**
     * 具体内容
     */
    @JSONField(name = "info")
    private InfoDTO info;
    @JSONField(name = "dwFileIndex")
    private String dwFileIndex;
    @JSONField(name = "dwFilePos")
    private String dwFilePos;
    /**
     * 实时抓拍的人脸图片的 base64
     * 编码数据
     */
    @JSONField(name = "SanpPic")
    private String sanpPic;

    @NoArgsConstructor
    @Data
    public static class InfoDTO {
        /**
         * 设备存储的人员 ID 号
         */
        @JSONField(name = "PersonID")
        private Integer personID;
        /**
         * 控制记录时间 。 e.g.,
         * 2018-03-25T21:50:05
         */
        @JSONField(name = "CreateTime")
        private String createTime;
        /**
         * 黑白名单比对相似度
         */
        @JSONField(name = "Similarity1")
        private Double similarity1;
        /**
         * 身份证比对相似度
         */
        @JSONField(name = "Similarity2")
        private Integer similarity2;
        /**
         * 认证结果
         * 0: 无
         * 1: 允许
         * 2: 拒绝
         * 3: 还没有注册
         * 22:待核验(开门方式为 3:人脸
         * 核验+远程开门方式的控制记
         * 录)
         * 24:无权限（特殊版本非通行时
         * 间段的控制记录）
         */
        @JSONField(name = "VerifyStatus")
        private Integer verifyStatus;
        /**
         * 验证类型。
         * 1: 白名单验证
         * 2: 身份证验证
         * 3: 白名单 + 身份证验证
         * 21:RF 卡验证(内置刷卡机型)
         * 22:RF 卡验证 + 白名单验证(内置
         * 刷卡机型)
         * 24:韦根卡验证
         * 25:韦根卡 + 白名单验证
         * 27:HTTP 远程开门
         */
        @JSONField(name = "VerfyType")
        private Integer verfyType;
        /**
         * 名单类型
         * 0: 白名单
         * 1: 黑名单
         */
        @JSONField(name = "PersonType")
        private Integer personType;
        /**
         * 姓名(最大长度 32 字节)
         */
        @JSONField(name = "Name")
        private String name;
        /**
         * 性别
         * 0: 男
         * 1: 女
         * 2: 其它
         */
        @JSONField(name = "Gender")
        private Integer gender;
        /**
         * 民族
         * 1: "汉"
         */
        @JSONField(name = "Nation")
        private Integer nation;
        /**
         * 证件类型
         * 0:身份证
         */
        @JSONField(name = "CardType")
        private Integer cardType;
        /**
         * 证件号，最大长度为 32 个字符
         * 长度（含结束符
         */
        @JSONField(name = "IdCard")
        private String idCard;
        /**
         * 生日，e.g., 2018-1-1
         */
        @JSONField(name = "Birthday")
        private String birthday;
        /**
         * 电话号码，最大长度为 32 个字
         * 符长度（含结束符）
         */
        @JSONField(name = "Telnum")
        private String telnum;
        /**
         * 籍贯，最大长度为 32 个字符长
         * 度（含结束符）
         */
        @JSONField(name = "Native")
        private String nativeX;
        /**
         * 地址，最大长度为 72 个字符长
         * 度（含结束符）
         */
        @JSONField(name = "Address")
        private String address;
        /**
         * 备注，最大长度为 64 个字符长
         * 度（含结束符）
         */
        @JSONField(name = "Notes")
        private String notes;
        /**
         * 韦根卡号生成方式
         * 0: 公用卡号
         * 1: 自动生成
         * 2: 手动输入
         * 3: 不使用门禁卡号
         */
        @JSONField(name = "MjCardFrom")
        private String mjCardFrom;
        /**
         * 设备代码(Facility code)
         */
        @JSONField(name = "MjCardNo")
        private Integer mjCardNo;

        @JSONField(name = "isNoMask")
        private Integer isNoMask;

        /**
         * 设备id
         */
        @JSONField(name = "DeviceID")
        private Integer deviceID;
        @JSONField(name = "PushType")
        private Integer pushType;
        @JSONField(name = "OpendoorWay")
        private Integer opendoorWay;
        @JSONField(name = "szQrCodeData")
        private String szQrCodeData;

        /**
         * Id 卡卡号，最大长度为 18 个字
         * 符长度
         */
        @JSONField(name = "RFIDCard")
        private String rFIDCard;
        /**
         * 是否是临时名单
         * 0: 永久生效名单
         * 1: 临时名单
         * 2：临时名单 2
         * 3：临时名单 3
         */
        @JSONField(name = "Tempvalid")
        private Integer tempvalid;
        /**
         * 用户自定义的人员 ID 号
         */
        @JSONField(name = "CustomizeID")
        private Integer customizeID;
        /**
         * 用户自定义的人员 UUID 号
         */
        @JSONField(name = "PersonUUID")
        private String personUUID;
        /**
         * 如果是临时名单，临时名单生
         * 效 的 开 始 时 间
         */
        @JSONField(name = "ValidBegin")
        private String validBegin;
        /**
         2: 出口         * 如果是临时名单，临时名单生
         * 效 的 结 束 时 间
         */
        @JSONField(name = "ValidEnd")
        private String validEnd;
        /**
         * 是否及时推送信息,0:未及时
         * 推送（推送时间大于认证时间
         * 10 秒）1:及时推送
         */
        @JSONField(name = "Sendintime")
        private Integer sendintime;
        /**
         * 出入口方向
         * 0：单向
         * 1：入口
         *
         */
        @JSONField(name = "Direction")
        private Integer direction;
    }
}
